package com.indexingsystem.boss.admin.mapper;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.indexingsystem.boss.Vo.MenusRelationsVo;
import com.indexingsystem.boss.Vo.PavilionColumnsSortVo;
import com.indexingsystem.boss.Vo.ResDetailReqVo;
import com.indexingsystem.boss.Vo.SiteResCateReqVo;
import com.indexingsystem.boss.entity.PavilionColumns;
import com.indexingsystem.boss.entity.PavilionInfo;
import com.indexingsystem.boss.entity.PavilionRelations;
import com.indexingsystem.boss.entity.ResResource;
import com.indexingsystem.boss.entity.ResourceYearInfo;
import com.indexingsystem.boss.entity.ResourcesList;

public interface PavilionsCommonMapper {

	/**
	 * 获取分馆列表信息
	 * 
	 * @return
	 */
	List<PavilionInfo> getPavilionsList();

	/**
	 * 获取栏目列表信息
	 * 
	 * @param pavilionId
	 * @return
	 */
	List<PavilionColumns> getPavilionsInfo(String pavilionId);

	/**
	 * 通过菜单栏目获取栏目所有关联分类.
	 * 
	 * @param menuId
	 * @return
	 */
	List<MenusRelationsVo> getResCategoryListByMenuId(String menuId);

	/**
	 * 获取前五条资源分类列表信息
	 * 
	 * @param menuId
	 * @return
	 */
	List<PavilionRelations> getFiveRelationsInfo(String menuId);

	/**
	 * 通过栏目id获取栏目资源分类总数量.
	 * 
	 * @param menuId
	 * @return
	 */
	Integer getFiveRelationsInfoCount(String menuId);

	/**
	 * 获取全部资源分类列表信息
	 * 
	 * @param menuId
	 * @return
	 */
	List<PavilionRelations> getAllRelationsInfo(String menuId);

	/**
	 * 通过资源Id获取最新发布的资源略缩图
	 * 
	 * @param resId
	 * @return
	 */
	String getThumbnail(List<String> resId);

	/**
	 * 获取资源列表信息总数
	 * 
	 * @param treeReqVo
	 * @return
	 */
	Integer getResourcesListCount(String id);

	/**
	 * 获取资源列表信息
	 * 
	 * @param resCategoryId
	 * @return
	 */
	List<ResourcesList> getResourcesList(String id);

	/**
	 * 获取资源详情
	 * 
	 * @param resId
	 * @return
	 */
	ResResource getResourcesInfoByMagazinesType(ResDetailReqVo resDetailReqVo);

	/**
	 * 通过资源类型Id获取资源类型名称
	 * 
	 * @param resTypeId
	 * @return
	 */
	String getResourceTypeName(String resTypeId);

	/**
	 * 通过资源类型Id获取图书封面图
	 * 
	 * @param resTypeId
	 * @return
	 */
	String getWithBooks(String resId);

	/**
	 * 通过资源类型Id获取游戏封面图
	 * 
	 * @param resTypeId
	 * @return
	 */
	String getWithGames(String resId);

	/**
	 * 通过资源类型Id获取报刊封面图
	 * 
	 * @param resTypeId
	 * @return
	 */
	String getWithMagazines(String resId);

	/**
	 * 通过资源类型Id获取视频封面图
	 * 
	 * @param resTypeId
	 * @return
	 */
	String getWithVideos(String resId);

	/**
	 * 通过资源分类Id获取资源Id
	 * 
	 * @param reCategoryId
	 * @return
	 */
	List<String> getResId(String reCategoryId);

	/**
	 * 通过资源Id获取所有年份信息
	 * 
	 * @param resId
	 * @return
	 */
	List<Integer> getYear(List<String> resId);

	/**
	 * 获取报刊资源信息
	 * 
	 * @param year
	 * @param resId
	 * @return
	 */
	List<ResourceYearInfo> getResourceYear(Map<String, Object> map);

	/**
	 * 获取其它资源信息
	 * 
	 * @param resId
	 * @return
	 */
	List<ResourcesList> getResource(Map<String, Object> map);

	/**
	 * 获取更多资源信息
	 * 
	 * @param map
	 * @return
	 */
	List<ResourcesList> getMoreResource(String menuId, String resCategoryId);

	/**
	 * 通过资源分类id获取该分类总年份集合.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	List<Integer> getResYearByMagazinesType(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类id和year查询同一个分类、同一年的总数据.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	List<ResourceYearInfo> getResByMagazinesTypeInfoByYear(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类和资源id获取同一个分类中其它绘本资源列表.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	List<ResourcesList> getIdenticalResByBooksTypeInfos(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类id获取同一个分类中其它绘本资源列表总数.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	Integer getIdenticalResByBooksTypeInfosCount(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类和资源id获取不同分类中绘本资源列表.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	List<ResourcesList> getNotIdenticalResByBooksTypeInfos(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类和资源id获取不同分类中绘本资源列表总数.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	Integer getNotIdenticalResByBooksTypeInfosCount(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类和资源id获取同一个分类中其它绘本资源列表.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	List<ResourcesList> getIdenticalResByVideosTypeInfos(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类和资源id获取不同分类中绘本资源列表.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	List<ResourcesList> getNotIdenticalResByVideosTypeInfos(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类id和year获取同一个资源分类id同一个年的报刊资源列表总数.
	 * 
	 * @param magazinesYearListReqVo
	 * @return
	 */
	Integer getMagazinesYearListCount(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类id获取同一个分类中其它动画资源列表总数.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	Integer getIdenticalResByVideoTypeInfosCount(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类id获取不同分类中其它动画资源列表总数.
	 * 
	 * @param siteResCateReqVo
	 * @return
	 */
	Integer getNotIdenticalResByVideoTypeInfosCount(SiteResCateReqVo siteResCateReqVo);

	/**
	 * 通过资源分类id获取报刊资源列表信息
	 * 
	 * @param resCategoryId
	 * @return
	 */
	List<ResourcesList> getMagazinesTypeResourcesListByResCategoryId(@Param("list") List<String> list);

	/**
	 * 通过资源分类id获取报刊资源列表总数.
	 * 
	 * @param resCategoryId
	 * @return
	 */
	Integer getMagazinesTypeResCount(@Param("list") List<String> list);

	/**
	 * 通过资源分类id获取绘本资源列表信息
	 * 
	 * @param resCategoryId
	 * @return
	 */
	List<ResourcesList> getBooksTypeResourcesListByResCategoryId(@Param("list") List<String> list);

	/**
	 * 通过资源分类id获取绘本资源列表总数.
	 * 
	 * @param resCategoryId
	 * @return
	 */
	Integer getBooksTypeResCount(@Param("list") List<String> list);

	/**
	 * 通过资源分类id获取动画资源列表信息
	 * 
	 * @param resCategoryId
	 * @return
	 */
	List<ResourcesList> getVideosTypeResourcesListByResCategoryId(@Param("list") List<String> list);

	/**
	 * 通过资源分类id获取动画资源列表总数.
	 * 
	 * @param resCategoryId
	 * @return
	 */
	Integer getVideosTypeResCount(@Param("list") List<String> list);

	List<PavilionColumns> getPavilionColumnsListByCondition(PavilionColumnsSortVo pavilionColumnsSortVo);

	void updatePavilionColumnsListByCondition(PavilionColumnsSortVo pavilionColumnsSortVo);
	
	/**
	 * 获取前五条资源分类列表信息
	 * 
	 * @param menuId
	 * @return
	 */
	List<PavilionRelations> getFiveRelationsInfoForWebChat(String menuId);

	/**
	 * 通过栏目id获取栏目资源分类总数量.
	 * 
	 * @param menuId
	 * @return
	 */
	Integer getFiveRelationsInfoCountForWebChat(String menuId);
	
}